Saltar al contenido principal

Disco independiente

Los volúmenes de Docker Swarm se almacenan en el disco principal del servidor, pero en entornos de producción es recomendable utilizar un disco independiente para almacenar los datos de los contenedores. Esto nos permite separar los datos de la aplicación del sistema operativo y facilita la gestión y el mantenimiento del sistema. Para ello, podemos utilizar un sistema de archivos en red como NFS o Samba para compartir el disco independiente entre los nodos del clúster de Docker Swarm, incluso usar GlusterFS para la replicación de datos. De esta manera, todos los nodos podrán acceder a los datos almacenados en el disco independiente y los contenedores podrán utilizar estos datos de manera transparente.

Configuración del disco independiente

Para configurar un disco independiente para los volúmenes de Docker Swarm, sigue estos pasos:

1. Busca el disco a usar como carpeta

Primero, conecta el disco independiente a tu servidor. Luego, identifica el nombre del disco y la partición que deseas utilizar. Usa los siguientes comandos para conocer los nombres de los discos conectados:

df -h
lsblk

2. Añade un LVM

info

Recomendación Crítica: Añade LVM Dado que estás usando un RAID 1 (/dev/sdb1), te recomiendo encarecidamente que no formatees la partición directamente. En su lugar, usa LVM (Logical Volume Manager).

Esto te da una flexibilidad inmensa para el futuro, permitiéndote redimensionar, crear snapshots o mover volúmenes sin dolor.

sudo apt-get install lvm2
sudo pvcreate /dev/sdb1
sudo vgcreate swarm-vg /dev/sdb1
sudo lvcreate -l 100%FREE -n swarm-lv swarm-vg

3. Formatea el disco con XFS

peligro

¡ADVERTENCIA IMPORTANTE! Este comando borrará permanentemente todos los datos que existan en la partición /dev/sdb1. Asegúrate al 100% de que es el disco correcto y de que no contiene nada que necesites.

sudo mkfs.xfs /dev/swarm-vg/swarm-lv

Recibirás un mensaje parecido a este:

meta-data=/dev/swarm-vg/swarm-lv isize=512    agcount=4, agsize=122060544 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=488242176, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=238399, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

4. Crea el punto de montaje

Crea el directorio donde montarás el disco independiente. Asegúrate de que esta ruta sea idéntica en todos los nodos del clúster.

sudo mkdir -p /mnt/swarm-storage

Encuentra el Volumen Lógico (LV) correcto Usa lsblk para ver el nombre de tu Volumen Lógico. Es la "última capa" debajo de sdb1.

lsblk -f /dev/sdb1

Verás algo como esto:

NAME                  FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
sdb1 LVM2_member LVM2 001 vX75nk-oo21-hJzM-mLtP-HrLS-uDji-E9lhAy
└─swarm--vg-swarm--lv xfs 1c753a8e-65d3-4d8b-8d1c-fc9626fdc426
root@guia003:/home/guia# sudo mount UUID=1c753a8e-65d3-4d8b-8d1c-fc9626fdc426 /mnt/swarm-storage

  • El dispositivo que NO puedes montar es: /dev/sdb1 (el LVM2_member) ni su UUID: vX75nk-oo21-hJzM-mLtP-HrLS-uDji-E9lhAy.

  • El dispositivo que debes montar es el que está indentado: vg_storage-lv_gluster_brick1 on UUID:1c753a8e-65d3-4d8b-8d1c-fc9626fdc426

el FSTYPE es xfs y nos indica que ya esta formateado y su formato es XFS.

El nombre completo de este dispositivo suele estar en /dev/mapper/ o /dev/VG_NAME/LV_NAME. Por ejemplo: /dev/vg_storage/lv_gluster_brick1.

aviso

¡Importante! No debes usar /dev/sdb1 para montar el disco permanentemente. Si reinicias el servidor con otro USB conectado, /dev/sdb1 podría cambiar a /dev/sdc1 y tu sistema fallaría.

Usaremos el UUID del LVM, que es un "número de serie" único para esa partición que nunca cambia.

Ejecuta este comando para ver el UUID y el tipo de sistema de archivos:

sudo mount UUID=1c753a8e-65d3-4d8b-8d1c-fc9626fdc426 /mnt/swarm-storage

Sino da error, significa que el montaje fue exitoso. Por lo tanto solo queda hacer que esta configuración sea permanente.

6. Configura el montaje automático al iniciar el sistema

Edita el archivo /etc/fstab para añadir una entrada que monte el disco automáticamente al iniciar el sistema. Usa tu editor de texto favorito, por ejemplo:

sudo nano /etc/fstab
UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ab /mnt/swarm-storage xfs defaults 0 0

Reemplaza a1b2c3d4-e5f6-7890-abcd-1234567890ab con el UUID que obtuviste en el paso anterior.

7. Prueba el montaje automático

Desmonta el disco y luego usa el comando mount -a para probar si se monta correctamente según la configuración de /etc/fstab:

sudo umount /mnt/swarm-storage
sudo mount -a
systemctl daemon-reload

Si no ves ningún error, ¡felicidades! Has configurado correctamente un disco independiente para los volúmenes de Docker Swarm.

8. Repite en todos los nodos del clúster

Repite los pasos del 1 al 7 en cada uno de los nodos del clúster de Docker Swarm para asegurarte de que todos tengan acceso al disco independiente.